#include<stdio.h>

int main()
{
    char* str = "Hello Linux\n";
    *str = 'h';

    return 0;
}

//#include<stdio.h>
//#include<unistd.h>
//
//int global_val = 123; // 定义一个全局变量
//
//int main()
//{
//    int id = fork();
//
//    if(id == 0)
//    {
//        // 子进程
//        int count = 3;
//        while(1)
//        {
//            printf("child: pid:%d ppid:%d global_val:%d &global_val:%p\n",getpid(),getppid(),global_val,&global_val);
//            sleep(1);
//
//            if(count == 0)
//            {
//                global_val = 456;
//                printf("child change global_val 123 -> 456\n");
//            }
//            count--;
//        }
//    }
//    else 
//    {
//        // 父进程
//        
//        while(1)
//        {
//            printf("father: pid:%d ppid:%d global_val:%d &global_val:%p\n",getpid(),getppid(),global_val,&global_val);
//            sleep(1);
//        }
//    }
//
//    return 0;
//}
//

//#include<stdio.h>
//
//struct A
//{
//    int a;
//    int b;
//    int c;
//}obj;
//
//int main()
//{
//    printf("obj:%p\n",&obj);
//    printf("obj.a:%p\n",&obj.a);
//    printf("obj.b:%p\n",&obj.b);
//    printf("obj.c:%p\n",&obj.c);
//
//    return 0;
//}


//#include<stdio.h>
//
//int main()
//{
//    int arr[5] = {0};
//
//    int i = 0;
//
//    for(;i < 5 ; i++)
//    {
//        printf("arr[%d]:%p\n",i,&arr[i]);
//    }
//
//    return 0;
//}


//#include<stdio.h>
//#include<stdlib.h>
//
//int un_gval;
//int init_gval = 520;
//
//int main(int argc , char* argv[] , char* env[])
//{
//    printf("code addr:%p\n",main);
//        
//    const char* str = "Hello Linux";
//    printf("character constant addr:%p\n",str);
//
//    printf("init global value addr:%p\n",&init_gval);
//    printf("uninit global value addr:%p\n",&un_gval);
//
//    char* heap1 = (char*)malloc(100);
//    char* heap2 = (char*)malloc(100);
//    char* heap3 = (char*)malloc(100);
//    char* heap4 = (char*)malloc(100);
//    printf("heap addr:%p\n",heap1);
//    printf("heap addr:%p\n",heap2);
//    printf("heap addr:%p\n",heap3);
//    printf("heap addr:%p\n",heap4);
//    
//    printf("stack addr:%p\n",&str);
//    printf("stack addr:%p\n",&heap1);
//    printf("stack addr:%p\n",&heap2);
//    printf("stack addr:%p\n",&heap3);
//    printf("stack addr:%p\n",&heap4);
//
//    int i = 0;
//    for(; argv[i] ; i++)
//    {
//        printf("argv[%d]:%p\n",i,&argv[i]);
//    }
//
//    i = 0;
//    for(; env[i] ; i++)
//    {
//        printf("env[%d]:%p\n",i,&env[i]);
//    }
//
//    return 0;
//}





//int un_gval;
//int init_gval = 520;
//
//int main()
//{
//    printf("code addr:%p\n",main);
//        
//    const char* str = "Hello Linux";
//    printf("character constant addr:%p\n",str);
//
//    printf("init global value addr:%p\n",&init_gval);
//    printf("uninit global value addr:%p\n",&un_gval);
//
//    char* heap = (char*)malloc(100);
//    printf("heap addr:%p\n",heap);
//    
//    printf("stack addr:%p\n",&str);
//
//    return 0;
//}
